const path = require('path')

// 演示 tree-shaking 能力
module.exports = (env) => {
  // 使用环境变量
  console.log('Production: ', env.production) // true
  return {
    mode: env.production ? 'production' : 'development',
    // mode 为 development 时使用 inline-source-map 会内联插入代码，可以追踪错误代码准确信息和源代码的错误位置. 显著增加 bundle 体积, 降低整体性能, 但是构建速度快
    // mode 为 production 时应该选用 source-map. 外置一个 sourceMap 文件, 同样可以追踪错误代码准确信息和源代码的错误位置
    // development 产出的 bundle.js 从 6KB 提升到 10KB.
    // production 若用 source-map 会使 1.2kb 提升到 7.7kb
    // ...(env.production ? { devtool: 'source-map' } : { devtool: 'inline-source-map' }),

    // 不开启混淆代码, 通常是 mode: production 后. 想要辅助调试而开启的配置.
    // optimization: {
    //   minimize: false
    // },

    entry: './src/index.js',
    output: {
      filename: 'bundle.js',
      path: path.resolve(__dirname, 'dist'),
      // 在每次构建前清理 /dist 文件夹
      clean: true
    },
    optimization: {
      // 支持 ES6 的 exports, 以便做 tree-shaking
      usedExports: true
    }
  }
}
